{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5d904dee",
   "metadata": {},
   "source": [
    "# Example 1: Function Fitting\n",
    "\n",
    "In this example, we will cover how to leverage grid refinement to maximimze KANs' ability to fit functions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94056ef6",
   "metadata": {},
   "source": [
    "intialize model and create dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0a59179d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cuda\n",
      "checkpoint directory created: ./model\n",
      "saving model version 0.0\n"
     ]
    }
   ],
   "source": [
    "from kan import *\n",
    "\n",
    "\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "print(device)\n",
    "\n",
    "# initialize KAN with G=3\n",
    "model = KAN(width=[2,1,1], grid=3, k=3, seed=1, device=device)\n",
    "\n",
    "# create dataset\n",
    "f = lambda x: torch.exp(torch.sin(torch.pi*x[:,[0]]) + x[:,[1]]**2)\n",
    "dataset = create_dataset(f, n_var=2, device=device)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb1f817e",
   "metadata": {},
   "source": [
    "Train KAN (grid=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a87b97b0",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "| train_loss: 4.16e-02 | test_loss: 4.35e-02 | reg: 9.79e+00 | : 100%|█| 20/20 [00:03<00:00,  6.03it"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.1\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "model.fit(dataset, opt=\"LBFGS\", steps=20);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52294efd",
   "metadata": {},
   "source": [
    "The loss plateaus. we want a more fine-grained KAN!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3f1cfc9d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.2\n"
     ]
    }
   ],
   "source": [
    "# initialize a more fine-grained KAN with G=10\n",
    "model = model.refine(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3cc5079",
   "metadata": {},
   "source": [
    "Train KAN (grid=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "898b1794",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "| train_loss: 6.96e-03 | test_loss: 6.10e-03 | reg: 9.75e+00 | : 100%|█| 20/20 [00:02<00:00,  7.32it"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.3\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "model.fit(dataset, opt=\"LBFGS\", steps=20);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bcdc0d3d",
   "metadata": {},
   "source": [
    "The loss becomes lower. This is good! Now we can even iteratively making grids finer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a1c25e8a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "checkpoint directory created: ./model\n",
      "saving model version 0.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "| train_loss: 1.46e-02 | test_loss: 1.53e-02 | reg: 8.83e+00 | : 100%|█| 200/200 [00:10<00:00, 19.67\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.1\n",
      "saving model version 0.2\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "| train_loss: 2.84e-04 | test_loss: 3.29e-04 | reg: 8.84e+00 | : 100%|█| 200/200 [00:15<00:00, 13.09\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.3\n",
      "saving model version 0.4\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "| train_loss: 4.21e-05 | test_loss: 4.04e-05 | reg: 8.84e+00 | : 100%|█| 200/200 [00:09<00:00, 21.22\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.5\n",
      "saving model version 0.6\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "| train_loss: 1.02e-05 | test_loss: 1.24e-05 | reg: 8.84e+00 | : 100%|█| 200/200 [00:10<00:00, 18.76\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.7\n",
      "saving model version 0.8\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "| train_loss: 1.64e-04 | test_loss: 1.74e-03 | reg: 8.86e+00 | : 100%|█| 200/200 [00:17<00:00, 11.72"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.9\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "grids = np.array([3,10,20,50,100])\n",
    "\n",
    "\n",
    "train_losses = []\n",
    "test_losses = []\n",
    "steps = 200\n",
    "k = 3\n",
    "\n",
    "for i in range(grids.shape[0]):\n",
    "    if i == 0:\n",
    "        model = KAN(width=[2,1,1], grid=grids[i], k=k, seed=1, device=device)\n",
    "    if i != 0:\n",
    "        model = model.refine(grids[i])\n",
    "    results = model.fit(dataset, opt=\"LBFGS\", steps=steps)\n",
    "    train_losses += results['train_loss']\n",
    "    test_losses += results['test_loss']\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6be8ba55",
   "metadata": {},
   "source": [
    "Training dynamics of losses display staircase structures (loss suddenly drops after grid refinement)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "156f68a2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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MxMTE82//vWv5tatW80ZM2aYAwcONF0ul++c2267zRw0aJC5cuVK8/333zcvuugic8yYMWZra6sVbyuobdiwwRw6dKg5evRo88477/Qd1332j4MHD5o5OTnmnDlzzPXr15s7d+4033zzTXPHjh2+c3Sve++hhx4y+/fvb/7jH/8wd+7cab700ktmQkKCuWTJEt85us8n5/XXXzfvv/9+869//asJmK+++mq75/11Xy+77DIzPz/fXLt2rbl27VozPz/fvPLKK3tVu4KQBc4++2zztttua3fs9NNPN3/wgx9YVFFoq6ioMAFz1apVpmmapsfjMTMzM82f/exnvnMaGxvN5ORk8ze/+Y1pmqZZXV1tRkdHm88//7zvnH379pk2m8184403+vYNBLna2lpzxIgR5sqVK81Jkyb5gpDus//ce++95vnnn9/p87rX/nHFFVeY3/rWt9odu+6668ybbrrJNE3dZ385Ngj5674WFxebgPnee+/5zlm3bp0JmJ988slJ16uusT7W3NxMUVERU6dObXd86tSprF271qKqQltNTQ0AqampAOzcuZPy8vJ299jpdDJp0iTfPS4qKqKlpaXdOVlZWeTn5+vf4Rjz5s3jiiuu4JJLLml3XPfZf/72t78xbtw4rr/+etLT0znzzDN56qmnfM/rXvvH+eefz7///W+2b98OwAcffMB//vMfLr/8ckD3OVD8dV/XrVtHcnIy55xzju+cc889l+Tk5F7de2262scqKytxu91kZGS0O56RkUF5eblFVYUu0zRZsGAB559/Pvn5+QC++3i8e7x7927fOQ6Hg379+nU4R/8ORz3//PO8//77bNy4scNzus/+88UXX/DEE0+wYMECfvjDH7JhwwbuuOMOnE4nN998s+61n9x7773U1NRw+umnY7fbcbvdPPzww9x4442A/psOFH/d1/LyctLT0zu8fnp6eq/uvYKQRQzDaPfYNM0Ox6Rrt99+Ox9++CH/+c9/Ojx3MvdY/w5H7dmzhzvvvJMVK1YQExPT6Xm6z73n8XgYN24cjzzyCABnnnkm27Zt44knnuDmm2/2nad73TsvvPACf/7zn3nuuec444wz2LJlC/PnzycrK4vZs2f7ztN9Dgx/3Nfjnd/be6+usT6WlpaG3W7vkF4rKio6pGU5se9973v87W9/4+2332bw4MG+45mZmQAnvMeZmZk0Nzdz6NChTs+JdEVFRVRUVFBQUEBUVBRRUVGsWrWKX/3qV0RFRfnuk+5z7w0cOJC8vLx2x0aOHElJSQmg/6b95e677+YHP/gBN9xwA6NGjWLWrFl8//vfZ9GiRYDuc6D4675mZmayf//+Dq9/4MCBXt17BaE+5nA4KCgoYOXKle2Or1y5kokTJ1pUVWgxTZPbb7+dV155hbfeeovc3Nx2z+fm5pKZmdnuHjc3N7Nq1SrfPS4oKCA6OrrdOWVlZXz00Uf6dzhiypQpbN26lS1btvg+xo0bx8yZM9myZQvDhg3TffaT8847r8MSENu3bycnJwfQf9P+0tDQgM3W/tee3W73TZ/XfQ4Mf93XCRMmUFNTw4YNG3znrF+/npqamt7d+5MeZi0nrW36/O9//3uzuLjYnD9/vhkfH2/u2rXL6tJCwne/+10zOTnZfOedd8yysjLfR0NDg++cn/3sZ2ZycrL5yiuvmFu3bjVvvPHG407VHDx4sPnmm2+a77//vnnxxRdH/BTYrnx51php6j77y4YNG8yoqCjz4YcfNj/77DPzL3/5ixkXF2f++c9/9p2je917s2fPNgcNGuSbPv/KK6+YaWlp5j333OM7R/f55NTW1pqbN282N2/ebALm4sWLzc2bN/uWhfHXfb3sssvM0aNHm+vWrTPXrVtnjho1StPnQ1VhYaGZk5NjOhwO86yzzvJN/ZauAcf9ePrpp33neDwe88c//rGZmZlpOp1O88ILLzS3bt3a7nUOHz5s3n777WZqaqoZGxtrXnnllWZJSUkfv5vQcmwQ0n32n7///e9mfn6+6XQ6zdNPP9188skn2z2ve917LpfLvPPOO83s7GwzJibGHDZsmHn//febTU1NvnN0n0/O22+/fdyfy7NnzzZN03/3taqqypw5c6aZmJhoJiYmmjNnzjQPHTrUq9oN0zTNk29PEhEREQldGiMkIiIiEUtBSERERCKWgpCIiIhELAUhERERiVgKQiIiIhKxFIREREQkYikIiYiISMRSEBIREZGIpSAkIiIiEUtBSETC3pw5c7jmmmusLkNEgpCCkIiIiEQsBSERCRsvv/wyo0aNIjY2lv79+3PJJZdw99138+yzz/Laa69hGAaGYfDOO+8AsG/fPmbMmEG/fv3o378/V199Nbt27fK9XltL0oMPPkh6ejpJSUl85zvfobm52Zo3KCJ+F2V1ASIi/lBWVsaNN97Iz3/+c6699lpqa2tZs2YNN998MyUlJbhcLp5++mkAUlNTaWho4KKLLuKCCy5g9erVREVF8dBDD3HZZZfx4Ycf4nA4APj3v/9NTEwMb7/9Nrt27eKb3/wmaWlpPPzww1a+XRHxEwUhEQkLZWVltLa2ct1115GTkwPAqFGjAIiNjaWpqYnMzEzf+X/+85+x2Wz87ne/wzAMAJ5++mlSUlJ45513mDp1KgAOh4M//OEPxMXFccYZZ7Bw4ULuvvtufvrTn2KzqVFdJNTp/8UiEhbGjBnDlClTGDVqFNdffz1PPfUUhw4d6vT8oqIiduzYQWJiIgkJCSQkJJCamkpjYyOff/55u9eNi4vzPZ4wYQJ1dXXs2bMnoO9HRPqGWoREJCzY7XZWrlzJ2rVrWbFiBY8//jj3338/69evP+75Ho+HgoIC/vKXv3R4bsCAAV1er60VSURCm4KQiIQNwzA477zzOO+883jggQfIycnh1VdfxeFw4Ha725171lln8cILL/gGQXfmgw8+4PDhw8TGxgLw3nvvkZCQwODBgwP6XkSkb6hrTETCwvr163nkkUfYtGkTJSUlvPLKKxw4cICRI0cydOhQPvzwQz799FMqKytpaWlh5syZpKWlcfXVV7NmzRp27tzJqlWruPPOO9m7d6/vdZubm7nlllsoLi7mX//6Fz/+8Y+5/fbbNT5IJEyoRUhEwkJSUhKrV69myZIluFwucnJy+OUvf8m0adMYN24c77zzDuPGjaOuro63336byZMns3r1au69916uu+46amtrGTRoEFOmTGnXQjRlyhRGjBjBhRdeSFNTEzfccAM/+clPrHujIuJXhmmaptVFiIgEozlz5lBdXc2yZcusLkVEAkRtuyIiIhKxFIREREQkYqlrTERERCKWWoREREQkYikIiYiISMRSEBIREZGIpSAkIiIiEUtBSERERCKWgpCIiIhELAUhERERiVgKQiIiIhKx/j+coN0myA62aAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(train_losses)\n",
    "plt.plot(test_losses)\n",
    "plt.legend(['train', 'test'])\n",
    "plt.ylabel('RMSE')\n",
    "plt.xlabel('step')\n",
    "plt.yscale('log')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ed8d26b",
   "metadata": {},
   "source": [
    "Neural scaling laws (For some reason, this got worse than pykan 0.0. We're still investigating the reason, probably due to the updates of curve2coef)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "8301085c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'RMSE')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_params = 3 * grids\n",
    "train_vs_G = train_losses[(steps-1)::steps]\n",
    "test_vs_G = test_losses[(steps-1)::steps]\n",
    "plt.plot(n_params, train_vs_G, marker=\"o\")\n",
    "plt.plot(n_params, test_vs_G, marker=\"o\")\n",
    "plt.plot(n_params, 100*n_params**(-4.), ls=\"--\", color=\"black\")\n",
    "plt.xscale('log')\n",
    "plt.yscale('log')\n",
    "plt.legend(['train', 'test', r'$N^{-4}$'])\n",
    "plt.xlabel('number of params')\n",
    "plt.ylabel('RMSE')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2c521e5e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
